文丨壹观察 宿艺
2016年11月华为Mate 9系列发布会后,余承东在媒体专访时首次表示:“华为手机目标在体验方面也超越苹果”。
此时几乎没人相信。甚至有媒体当场发微信朋友圈说:“嘴哥又吹牛了”。
即使华为Mate 9系列搭载的EMUI5.0解决了安卓长期使用不卡顿难题,但鉴于安卓系统与苹果iOS之间在运行机制、效率与系统流畅度上的明显差异,“体验超苹果”似乎也只能是个梦想。
外界不知道的是,华为消费者业务此时已成立了“编译器与编程语言实验室”,目标是将安卓系统底层彻底解构,通过全新编译器从根本上一劳永逸地解决问题。编译器被誉为软件行业的“明珠”,可以说是连接人类世界与数字世界的桥梁,也是计算机与互联网技术最核心的底层技术之一。
其中的难度、风险与挑战,可想而知。
时隔两年半,2019年4月11日在上海的华为P30系列发布会上,华为宣布EMUI 9.1首先搭载了“方舟编译器”与“EROFS超级文件系统”。业界猛然发现,华为不仅实现了对安卓底层运行机制的彻底重构,甚至目标通过开源,联合Google、手机企业与开发者共同推动安卓生态的颠覆性“换血”—— 唯有如此,安卓系统从诞生起就存在的“顽疾”才能被根除。
余承东“体验超苹果”的目标,显然并不是空口吹牛。
方舟编译器:重构安卓底层
在此之前,几乎所有安卓手机企业在操作系统方面最大的努力,无非就是争夺安卓最新系统版本的适配速度,以及在其基础上推出的UI/ROM优化方案。
这相当于对原有安卓系统针对中国市场的修修补补,不仅造成了全球安卓碎片化最严重的市场,并且还因掺杂各种广告收益而被用户吐槽为“ADUI”,相当于负向优化。
只有华为选择了一条最难、具有极高风险的路:重构安卓底层。
华为消费者BG软件部总裁王成录博士对《壹观察》透露,相对传统Android系统,方舟编译器实现了对系统底层的四大“换血”:
第一,业界首个多语言联合优化编译器。
Android应用市场中TOP级APP,95%以上都是由多种开发语言来实现的。这些APP的逻辑部分是Java代码,但是为了增强app应用的安全性、可靠性、兼容性,开发者会用效率更高的C语言写库,供Java来调用。但跨语言调用,一定会导致额外的性能开销,并且调用的应用越重、开发语言越多,对系统性能的影响就会越明显。
方舟编译器可将不同语言代码在开发环境中自动编译成一套可执行的文件,直接消除了跨语言调用的开销,大大提升了APP应用在运行环境中的高效执行,这仅仅是第一步。
第二,干掉了安卓最关键,也是长期被诟病的“虚拟机”。
Android从诞生起,就是一个开源系统,要面对极其复杂的开发环境与硬件适配宽容度。因此选择了Java这个成熟语言,并由此带来了Java 虚拟机——相当于虚拟了一个Java运行环境,支持跨开发语言与跨平台操作。但同时问题也很明显:任何一个Android手机只要安装应用就会自动配置虚拟机,不仅占用了额外的系统资源,更重要的是,每个应用都需要通过虚拟机来完成对机器码(二进制码)的编译,然后再由虚拟机发出执行命令完成应用服务。
打个比较直观的比喻,这就相当于虚拟机里有两个翻译在工作,一个需要把法语翻译成俄文,再由另一名翻译成中文,这个过程两个翻译的工作是无法并行的,所以观众听到的内容一定断断续续。也就是说,安卓系统这种卡顿感无法避免,只能优化,但无法彻底解决问题。因此才有开发者说,虚拟机的性能决定了安卓运行瓶颈。这也是Google虽然在后期不断对编译器进行升级,但依旧无法解决系统卡顿顽疾的根本原因。
同样重要的是,虚拟机的统一回收内存机制也是“BUG”般的存在。安卓初期并没有对开发者有类似苹果iOS严格的开发机制,导致很多开发者都希望自己的应用尽可能地使用最大内存,以获得更好的用户体验。甚至有开发者利用这一规则漏洞,让其APP具备后台强行唤醒功能或者自家应用的“全家桶”唤醒机制。而Java虚拟机模式提供的内存GC(垃圾回收)机制,在内容垃圾集中回收时需要短暂中断应用运行。两种情况在中国市场遭遇,无疑进一步加剧了应用的随机卡顿问题。这也是很多开发者甚至是手机企业自己都不相信安卓手机可以“体验超苹果”的重要原因。
文章标题:【最新消息:余承东三年前“吹牛”华为体验超苹果,方舟编译器将要实现了】,请转载时务必注明文章作者和来源:融易新媒体。
本文网址:http://m.ironge.com.cn/tech/mobile/2635.html